[HVM] Rationalise OEM and Creator IDs and Table Revisions.
authorkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sat, 30 Dec 2006 15:45:13 +0000 (15:45 +0000)
committerkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sat, 30 Dec 2006 15:45:13 +0000 (15:45 +0000)
Create virtualised IDs and use them consistently.
Signed-off-by: Keir Fraser <keir@xensource.com>
tools/firmware/hvmloader/acpi/Makefile
tools/firmware/hvmloader/acpi/acpi2_0.h
tools/firmware/hvmloader/acpi/build.c
tools/firmware/hvmloader/acpi/dsdt.asl
tools/firmware/hvmloader/acpi/dsdt.c
tools/firmware/hvmloader/acpi/ssdt_tpm.asl
tools/firmware/hvmloader/acpi/ssdt_tpm.h
tools/firmware/hvmloader/acpi/static_tables.c
tools/firmware/vmxassist/vm86.c

index 16803d78d61fd52d7a40dd58cd6b53bf4583c498..c5a1283a9ea9bcb7cdca535477b8b49d7aaaea6e 100644 (file)
@@ -24,7 +24,7 @@ C_SRC = build.c dsdt.c static_tables.c
 H_SRC = $(wildcard *.h)
 OBJS  = $(patsubst %.c,%.o,$(C_SRC))
 
-IASL_VER = acpica-unix-20050513
+IASL_VER = acpica-unix-20060707
 IASL_URL = http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz
 
 # Disable PIE/SSP if GCC supports them. They can break us.
index 247b1f0976da55bed30790e9f038ff261cc8bf4a..04824f5642eb906cdc42a1b70ecb173a74baa4c4 100644 (file)
@@ -50,17 +50,18 @@ struct acpi_header {
     uint8_t  revision;
     uint8_t  checksum;
     uint8_t  oem_id[6];
-    uint64_t oem_table_id;
+    uint8_t  oem_table_id[8];
     uint32_t oem_revision;
     uint32_t creator_id;
     uint32_t creator_revision;
 };
 
-#define ACPI_OEM_ID             {'I','N','T','E','L',' '}
-#define ACPI_OEM_TABLE_ID       ASCII32(' ','T','B','D')
-#define ACPI_OEM_REVISION       0x00000002
-#define ACPI_CREATOR_ID         0x00       /* TBD */
-#define ACPI_CREATOR_REVISION   0x00000002
+#define ACPI_OEM_ID             "Xen"
+#define ACPI_OEM_TABLE_ID       "HVM"
+#define ACPI_OEM_REVISION       0
+
+#define ACPI_CREATOR_ID         ASCII32('H','V','M','L') /* HVMLoader */
+#define ACPI_CREATOR_REVISION   0
 
 /*
  * ACPI 2.0 Generic Address Space definition.
@@ -121,7 +122,6 @@ struct acpi_20_rsdt {
     struct acpi_header header;
     uint32_t entry[1];
 };
-#define ACPI_2_0_RSDT_REVISION 0x01
 
 /*
  * Extended System Description Table (XSDT).
@@ -130,7 +130,6 @@ struct acpi_20_xsdt {
     struct acpi_header header;
     uint64_t entry[1];
 };
-#define ACPI_2_0_XSDT_REVISION 0x01
 
 /*
  * TCG Hardware Interface Table (TCPA)
@@ -141,8 +140,6 @@ struct acpi_20_tcpa {
     uint32_t laml;
     uint64_t lasa;
 };
-
-#define ACPI_2_0_TCPA_REVISION 0x02
 #define ACPI_2_0_TCPA_LAML_SIZE (64*1024)
 
 /*
@@ -202,7 +199,6 @@ struct acpi_20_fadt {
     struct acpi_20_generic_address x_gpe0_blk;
     struct acpi_20_generic_address x_gpe1_blk;
 };
-#define ACPI_2_0_FADT_REVISION 0x03
 
 /*
  * FADT Boot Architecture Flags.
@@ -254,8 +250,6 @@ struct acpi_20_madt {
     uint32_t flags;
 };
 
-#define ACPI_2_0_MADT_REVISION 0x01
-
 
 /*
  * HPET Description Table
@@ -268,8 +262,6 @@ struct acpi_20_hpet {
     uint16_t           min_tick;
     uint8_t            page_protect;
 };
-
-#define ACPI_2_0_HPET_REVISION 0x01
 #define ACPI_HPET_ADDRESS 0xFED00000UL
 
 /*
@@ -343,6 +335,17 @@ struct acpi_20_madt_intsrcovr {
 #define ACPI_2_0_TCPA_SIGNATURE ASCII32('T','C','P','A')
 #define ACPI_2_0_HPET_SIGNATURE ASCII32('H','P','E','T')
 
+/*
+ * Table revision numbers.
+ */
+#define ACPI_2_0_RSDP_REVISION 0x02
+#define ACPI_2_0_FADT_REVISION 0x04
+#define ACPI_2_0_MADT_REVISION 0x02
+#define ACPI_2_0_RSDT_REVISION 0x01
+#define ACPI_2_0_XSDT_REVISION 0x01
+#define ACPI_2_0_TCPA_REVISION 0x02
+#define ACPI_2_0_HPET_REVISION 0x01
+
 #pragma pack ()
 
 #define ACPI_PHYSICAL_ADDRESS 0xEA000
index db1c902761c9b430522440963d87916e66e8cf61..32d269d2131356520c43d4b6dbaa4239b3d4988f 100644 (file)
@@ -57,8 +57,8 @@ int construct_madt(struct acpi_20_madt *madt)
     memset(madt, 0, sizeof(*madt));
     madt->header.signature    = ACPI_2_0_MADT_SIGNATURE;
     madt->header.revision     = ACPI_2_0_MADT_REVISION;
-    strncpy(madt->header.oem_id, "INTEL ", 6);
-    madt->header.oem_table_id = ACPI_OEM_TABLE_ID;
+    strncpy(madt->header.oem_id, ACPI_OEM_ID, 6);
+    strncpy(madt->header.oem_table_id, ACPI_OEM_TABLE_ID, 8);
     madt->header.oem_revision = ACPI_OEM_REVISION;
     madt->header.creator_id   = ACPI_CREATOR_ID;
     madt->header.creator_revision = ACPI_CREATOR_REVISION;
@@ -129,8 +129,8 @@ int construct_hpet(struct acpi_20_hpet *hpet)
     memset(hpet, 0, sizeof(*hpet));
     hpet->header.signature    = ACPI_2_0_HPET_SIGNATURE;
     hpet->header.revision     = ACPI_2_0_HPET_REVISION;
-    strncpy(hpet->header.oem_id, "INTEL ", 6);
-    hpet->header.oem_table_id = ACPI_OEM_TABLE_ID;
+    strncpy(hpet->header.oem_id, ACPI_OEM_ID, 6);
+    strncpy(hpet->header.oem_table_id, ACPI_OEM_TABLE_ID, 8);
     hpet->header.oem_revision = ACPI_OEM_REVISION;
     hpet->header.creator_id   = ACPI_CREATOR_ID;
     hpet->header.creator_revision = ACPI_CREATOR_REVISION;
@@ -184,12 +184,11 @@ int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs)
         tcpa->header.signature = ACPI_2_0_TCPA_SIGNATURE;
         tcpa->header.length    = sizeof(*tcpa);
         tcpa->header.revision  = ACPI_2_0_TCPA_REVISION;
-        strncpy(tcpa->header.oem_id, "IBM   ", 6);
-        tcpa->header.oem_table_id = ASCII64(' ', ' ', ' ', ' ',
-                                            ' ', 'x', 'e', 'n');
-        tcpa->header.oem_revision = 1;
-        tcpa->header.creator_id   = ASCII32('I', 'B', 'M', ' ');
-        tcpa->header.creator_revision = 1;
+        strncpy(tcpa->header.oem_id, ACPI_OEM_ID, 6);
+        strncpy(tcpa->header.oem_table_id, ACPI_OEM_TABLE_ID, 8);
+        tcpa->header.oem_revision = ACPI_OEM_REVISION;
+        tcpa->header.creator_id   = ACPI_CREATOR_ID;
+        tcpa->header.creator_revision = ACPI_CREATOR_REVISION;
         tcpa->lasa = e820_malloc(
             ACPI_2_0_TCPA_LAML_SIZE, E820_RESERVED, (uint32_t)~0);
         if ( tcpa->lasa )
index 1cf9f538a73b13fc9ea9df6ffe70bc8b73f70f0a..d47ea8d0c4ec7c1544aae0a2b310568c7460fd6d 100644 (file)
@@ -17,7 +17,7 @@
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
 
-DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL","int-xen", 2006)
+DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
 {
     Name (\PMBS, 0x0C00)
     Name (\PMLN, 0x08)
index c8d5f2852001ddac64900f12667b1991ea06835e..698bd72848c4ec937ac95404790b82e1907a3b66 100644 (file)
@@ -1,22 +1,22 @@
 /*
  * 
  * Intel ACPI Component Architecture
- * ASL Optimizing Compiler / AML Disassembler version 20050513 [Aug 11 2006]
- * Copyright (C) 2000 - 2005 Intel Corporation
- * Supports ACPI Specification Revision 3.0
+ * ASL Optimizing Compiler version 20060707 [Dec 30 2006]
+ * Copyright (C) 2000 - 2006 Intel Corporation
+ * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "dsdt.asl" - Thu Dec 21 10:37:33 2006
+ * Compilation of "dsdt.asl" - Sat Dec 30 15:31:23 2006
  * 
  * C source code output
  *
  */
-unsigned char AmlCode[] = 
+unsigned char AmlCode[] =
 {
     0x44,0x53,0x44,0x54,0xD9,0x0D,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0xED,0x49,0x4E,0x54,0x45,0x4C,0x00,  /* 00000008    "..INTEL." */
-    0x69,0x6E,0x74,0x2D,0x78,0x65,0x6E,0x00,  /* 00000010    "int-xen." */
-    0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x13,0x05,0x05,0x20,0x08,0x50,0x4D,0x42,  /* 00000020    "... .PMB" */
+    0x02,0xFB,0x58,0x65,0x6E,0x00,0x00,0x00,  /* 00000008    "..Xen..." */
+    0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "HVM....." */
+    0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x07,0x07,0x06,0x20,0x08,0x50,0x4D,0x42,  /* 00000020    "... .PMB" */
     0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C,  /* 00000028    "S....PML" */
     0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31,  /* 00000030    "N...IOB1" */
     0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08,  /* 00000038    "..IOL1.." */
index 98010a7f14d6e75cf54812157a075f678f4ff2af..49a5e1bc9fc4dc3c3112c2a068f3eafc131d7b8e 100644 (file)
@@ -17,7 +17,7 @@
 
 //*  SSDT for TPM TIS Interface for Xen with Qemu device model
 
-DefinitionBlock ("SSDT_TPM.aml", "SSDT", 1, "IBM","xen", 2006)
+DefinitionBlock ("SSDT_TPM.aml", "SSDT", 2, "Xen", "HVM", 0)
 {
     Device (TPM) {
         Name (_HID, EisaId ("PNP0C31"))
@@ -26,4 +26,4 @@ DefinitionBlock ("SSDT_TPM.aml", "SSDT", 1, "IBM","xen", 2006)
             Memory32Fixed (ReadWrite, 0xFED40000, 0x5000,)
         })
     }
-}
\ No newline at end of file
+}
index 9d943a3a3647ab2c4f25e39044bd52f26ea6aacd..2585314ceb7468c8b9bef9eb268923bda929b6c7 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * 
  * Intel ACPI Component Architecture
- * ASL Optimizing Compiler version 20060707 [Sep 11 2006]
+ * ASL Optimizing Compiler version 20060707 [Dec 30 2006]
  * Copyright (C) 2000 - 2006 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "acpi_ssdt_tpm.asl" - Mon Oct 30 11:28:27 2006
+ * Compilation of "ssdt_tpm.asl" - Sat Dec 30 15:31:27 2006
  * 
  * C source code output
  *
@@ -13,9 +13,9 @@
 unsigned char AmlCode_TPM[] =
 {
     0x53,0x53,0x44,0x54,0x4C,0x00,0x00,0x00,  /* 00000000    "SSDTL..." */
-    0x01,0x6D,0x49,0x42,0x4D,0x00,0x00,0x00,  /* 00000008    ".mIBM..." */
-    0x78,0x65,0x6E,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "xen....." */
-    0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x02,0x56,0x58,0x65,0x6E,0x00,0x00,0x00,  /* 00000008    ".VXen..." */
+    0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "HVM....." */
+    0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
     0x07,0x07,0x06,0x20,0x5B,0x82,0x26,0x54,  /* 00000020    "... [.&T" */
     0x50,0x4D,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000028    "PM_._HID" */
     0x0C,0x41,0xD0,0x0C,0x31,0x08,0x5F,0x43,  /* 00000030    ".A..1._C" */
index 0890700f7ab9bbeed9213ec7294f28f8ea76a891..96d7f0c33139dd40ba5bb535d874b08d125367b0 100644 (file)
@@ -118,7 +118,7 @@ struct acpi_20_xsdt Xsdt = {
         .signature    = ACPI_2_0_XSDT_SIGNATURE,
         .length       = sizeof(struct acpi_header),
         .revision     = ACPI_2_0_XSDT_REVISION,
-        .oem_id       = ACPI_OEM_ID, 
+        .oem_id       = ACPI_OEM_ID,
         .oem_table_id = ACPI_OEM_TABLE_ID,
         .oem_revision = ACPI_OEM_REVISION,
         .creator_id   = ACPI_CREATOR_ID,
@@ -130,7 +130,7 @@ struct acpi_20_xsdt Xsdt = {
 struct acpi_20_rsdp Rsdp = {
     .signature = ACPI_2_0_RSDP_SIGNATURE,
     .oem_id    = ACPI_OEM_ID,
-    .revision  = ACPI_OEM_REVISION, 
+    .revision  = ACPI_2_0_RSDP_REVISION,
     .length    = sizeof(struct acpi_20_rsdp)
 };
 
index 4715c31075bab216bdc41050536a7865022cc1dc..78c1da0d88add2a7a7d991ce75bd3ae3d951227d 100644 (file)
@@ -961,9 +961,9 @@ protected_mode(struct regs *regs)
 
        /* initialize jump environment to warp back to protected mode */
        regs->uss = DATA_SELECTOR;
-       regs->uesp = stack_top;
+       regs->uesp = (unsigned long)stack_top;
        regs->cs = CODE_SELECTOR;
-       regs->eip = (unsignedswitch_to_protected_mode;
+       regs->eip = (unsigned long)switch_to_protected_mode;
 
        /* this should get us into 32-bit mode */
 }